/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import ControllerInterface.AbstractControllerMapFactory;
import ControllerInterface.IControllerProgressMap;
import ControllerInterface.IControllerSchemaMapping;
import ModelInterface.*;
import ViewInterface.AbstractViewMapFactory;
import ViewInterface.IViewSchema;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ProgressMonitor;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 *
 * @author Fabian
 */
public class ControllerSchemaMapping implements IControllerSchemaMapping {

    /**
     * 
     */
    public DefaultTreeModel modeloTreeS;
    /**
     * 
     */
    public DefaultTreeModel modeloTreeT;
    /**
     * 
     */
    public IViewSchema vistaSchema;
    /**
     * 
     */
    public DefaultTreeModel modeloArbolMap;
    /**
     * 
     */
    public IModelMainMapping myModeloMap;
    /**
     * 
     */
    public IModelCrawler myModeloCrawler;
    /**
     * 
     */
    public IModelDataMap myModeloDataMap;
    /**
     * 
     */
    public IEventMap myEvento;
    
    public IPlaceHasCommunity myPlaceHasCom;
    
    public IPlaceHasItem myPlaceHasItem;
    
    public ICommunityHasUser myComHasUser;
    /**
     * 
     */
    public ArrayList parametrosDB;
    /**
     * 
     */
    public IControllerProgressMap controladorProgreso;
    private boolean stop = false;
    private boolean crawlerMode = false;
    private boolean datasetMode = false;
    private String separador;
    int contOps;
    int contMaps;
    int contMaxOp;

    private String[] getTableColumn(String element) {
        String[] datos = new String[2];
        try {
            int punto = element.indexOf(".");
            int espacio = element.indexOf(" ");
            datos[0] = element.substring(0, punto);
            datos[1] = element.substring(punto + 1, espacio);
            
        } catch (NullPointerException ex) {
           
            datos[0] = "";
            datos[1] = "";
        }
        return datos;

    }

    private boolean mapFromXML(ArrayList parametros) {
        
        int idEvent = 0;
        ArrayList valCU = new ArrayList();
        ArrayList valPC = new ArrayList();
        ArrayList valPI = new ArrayList();
        ArrayList valE = new ArrayList();
        //0:commIDc 1:userIDc 2:commIDp 3:placeIDc 4:placeIDp 5:itemIDp
        //6:itemIDc 7:userIDe 8:eventValue 9:tiempo
        String mensaje;
        NodeList nList = this.myModeloCrawler.getData();
        contMaxOp = (nList.getLength() * 2) + 2;
        controladorProgreso.setMaxOp(contMaxOp);
 
        try {
            for (int i = 0; i < nList.getLength(); i++) {
                //Se verifica si el usuario no ha detenido el proceso
                if (stop) {
                    //System.out.println("Proceso detenido por el usuario");
                    mensaje = "Proceso detenido por el usuario";
                    controladorProgreso.newState(mensaje, contOps);
                    this.controladorProgreso.finish();
                    this.vistaSchema.mapFinish(false);
                    return false;
                }

                Node nNode = nList.item(i);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    
                    Element eElement = (Element) nNode;
                    //Se llenan los valores a mapearse en evento
                                      
                    //commIDc
                    valCU.add(getTagValue(parametros.get(0).toString(), eElement));
                    
                    valCU.add(getTagValue(parametros.get(1).toString(), eElement));
                
                    this.myComHasUser.createCommunityHasUser(valCU);
                    valCU.clear();
                    mensaje = this.myComHasUser.getLastQuery();
                    controladorProgreso.newState(mensaje, ++contOps);
                    contMaps++;
                    mensaje = "Evento Nº" + contMaps + " creado";
                    controladorProgreso.newState(mensaje, contOps);

                    //commIDp
                    valPC.add(getTagValue(parametros.get(2).toString(), eElement));

                    //placeIDc
                    valPC.add(getTagValue(parametros.get(3).toString(), eElement));

                    //Se llenan los valores a mapearse en place_community
                    this.myPlaceHasCom.createPlaceHasCommunity(valPC);
                    valPC.clear();
                    mensaje = this.myPlaceHasCom.getLastQuery();
                    controladorProgreso.newState(mensaje, ++contOps);
                    mensaje = "myComHasUser Nº" + contMaps + " creado";
                    controladorProgreso.newState(mensaje, contOps);

                    //commIDp
                    valPI.add(getTagValue(parametros.get(4).toString(), eElement));

                    //placeIDc
                    valPI.add(getTagValue(parametros.get(5).toString(), eElement));

                    //Se llenan los valores a mapearse en place_item
                    this.myPlaceHasItem.createPlaceHasItem(valPI);
                    valPI.clear();
                    mensaje = this.myPlaceHasItem.getLastQuery();
                    controladorProgreso.newState(mensaje, ++contOps);
                    mensaje = "myPlaceHasItem Nº" + contMaps + " creado";
                    controladorProgreso.newState(mensaje, contOps);

                    //eventID
                    valE.add(idEvent++);

                    //itemIDe
                    valE.add(getTagValue(parametros.get(6).toString(), eElement));

                    //userIDe
                    valE.add(getTagValue(parametros.get(7).toString(), eElement));

                    //value
                    valE.add(getTagValue(parametros.get(8).toString(), eElement));

                    //tiempo
                    valE.add(getTagValue(parametros.get(9).toString(), eElement));

                    //eventType
                    valE.add("1");

                    this.myEvento.createEvent(valE);
                    valE.clear();
                    mensaje = this.myEvento.getLastQuery();
                    controladorProgreso.newState(mensaje, ++contOps);
                    mensaje = "Evento Nº" + contMaps + " creado";
                    controladorProgreso.newState(mensaje, contOps);
                    
                }
            }
        } catch (Exception ex) {
            
            mensaje = "Falló la creacion de operacion nº "
                    + contMaps;
            controladorProgreso.newState(mensaje, contOps);
            this.controladorProgreso.finish();
            this.vistaSchema.mapFinish(false);
            Logger.getLogger(ControllerSchemaMapping.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

        return true;
    }

    private boolean mapFromDB(ResultSet rs) {

        int idEvent = 0;
        ArrayList valCU = new ArrayList();
        ArrayList valPC = new ArrayList();
        ArrayList valPI = new ArrayList();
        ArrayList valE = new ArrayList();
        String mensaje;
        //0:commIDc 1:userIDc 2:commIDp 3:placeIDc 4:placeIDp 5:itemIDp
        //6:itemIDc 7:userIDe 8:eventValue 9:tiempo
        try {
            while (rs.next()) {
                //Se verifica si el usuario no ha detenido el proceso
                if (stop) {
                    //System.out.println("Proceso detenido por el usuario");
                    mensaje = "Proceso detenido por el usuario";
                    controladorProgreso.newState(mensaje, contOps);
                    this.controladorProgreso.finish();
                    this.vistaSchema.mapFinish(false);
                    return false;
                }

               //commIDc
                valCU.add(rs.getString(0));
                
                //userIDc
                valCU.add(rs.getString(1));
                
                this.myComHasUser.createCommunityHasUser(valCU);
                valCU.clear();
                mensaje = this.myComHasUser.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                contMaps++;
                mensaje = "Evento Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);
                
                //commIDp
                valPC.add(rs.getString(2));
                
                //placeIDc
                valPC.add(rs.getString(3));
                
                //Se llenan los valores a mapearse en place_community
                this.myPlaceHasCom.createPlaceHasCommunity(valPC);
                valPC.clear();
                mensaje = this.myPlaceHasCom.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                mensaje = "myComHasUser Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);
                
                //commIDp
                valPI.add(rs.getString(4));
                
                //placeIDc
                valPI.add(rs.getString(5));
                
                //Se llenan los valores a mapearse en place_item
                this.myPlaceHasItem.createPlaceHasItem(valPI);
                valPI.clear();
                mensaje = this.myPlaceHasItem.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                mensaje = "myPlaceHasItem Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);
                
                //eventID
                valE.add(idEvent++);
                
                //itemIDe
                valE.add(rs.getString(6));
                
                //userIDe
                valE.add(rs.getString(7));
                
                //value
                valE.add(rs.getString(8));
                
                //tiempo
                valE.add(rs.getString(9));
                
                //eventType
                valE.add("1");
                
                this.myEvento.createEvent(valE);
                valE.clear();
                mensaje = this.myEvento.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                mensaje = "Evento Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);  
            }
        } catch (SQLException ex) {
            
            mensaje = "Falló la creacion de evento nº "
                    + contMaps;
            controladorProgreso.newState(mensaje, contOps);
            this.controladorProgreso.finish();
            Logger.getLogger(ControllerSchemaMapping.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
        return true;
    }

    private boolean mapFromDataset(ArrayList parametros){
    
        String header = myModeloDataMap.getHeader();
        String[] columnas = header.split(separador);
        String mensaje;
        int idEvent = 0;
        ArrayList valCU = new ArrayList();
        ArrayList valPC = new ArrayList();
        ArrayList valPI = new ArrayList();
        ArrayList valE = new ArrayList();
        ArrayList indices = new ArrayList();
        //0:commIDc 1:userIDc 2:commIDp 3:placeIDc 4:placeIDp 5:itemIDp
        //6:itemIDc 7:userIDe 8:eventValue 9:tiempo
        for (int j = 0; j < parametros.size(); j++) {
            for (int i = 0; i < columnas.length; i++) {
                if (columnas[i].equals(parametros.get(j))) {
                    indices.add(i);
                }
            }
        }

        try {
            String linea = this.myModeloDataMap.getDataLine();
            while (linea != null) {
                //Se verifica si el usuario no ha detenido el proceso
                if (stop) {
                    //System.out.println("Proceso detenido por el usuario");
                    mensaje = "Proceso detenido por el usuario";
                    controladorProgreso.newState(mensaje, contOps);
                    this.controladorProgreso.finish();
                    this.vistaSchema.mapFinish(false);
                    return false;
                }
                String[] datos = linea.split(separador);
                //Se llenan los valores a mapearse en community_user
                int index;
                
                //commIDc
                index = Integer.parseInt(indices.get(0).toString());
                valCU.add(datos[index]);
                
                //userIDc
                index = Integer.parseInt(indices.get(1).toString());
                valCU.add(datos[index]);
                
                this.myComHasUser.createCommunityHasUser(valCU);
                valCU.clear();
                mensaje = this.myComHasUser.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                contMaps++;
                mensaje = "Evento Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);
                
                //commIDp
                index = Integer.parseInt(indices.get(2).toString());
                valPC.add(datos[index]);
                
                //placeIDc
                index = Integer.parseInt(indices.get(3).toString());
                valPC.add(datos[index]);
                
                //Se llenan los valores a mapearse en place_community
                this.myPlaceHasCom.createPlaceHasCommunity(valPC);
                valPC.clear();
                mensaje = this.myPlaceHasCom.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                mensaje = "myComHasUser Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);
                
                //commIDp
                index = Integer.parseInt(indices.get(4).toString());
                valPI.add(datos[index]);
                
                //placeIDc
                index = Integer.parseInt(indices.get(5).toString());
                valPI.add(datos[index]);
                
                //Se llenan los valores a mapearse en place_item
                this.myPlaceHasItem.createPlaceHasItem(valPI);
                valPI.clear();
                mensaje = this.myPlaceHasItem.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                mensaje = "myPlaceHasItem Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);
                
                //eventID
                valE.add(idEvent++);
                
                //itemIDe
                index = Integer.parseInt(indices.get(6).toString());
                valE.add(datos[index]);
                
                //userIDe
                index = Integer.parseInt(indices.get(7).toString());
                valE.add(datos[index]);
                
                //value
                index = Integer.parseInt(indices.get(8).toString());
                valE.add(datos[index]);
                
                //tiempo
                index = Integer.parseInt(indices.get(9).toString());
                valE.add(datos[index]);
                
                //eventType
                valE.add("1");
                
                this.myEvento.createEvent(valE);
                valE.clear();
                mensaje = this.myEvento.getLastQuery();
                controladorProgreso.newState(mensaje, ++contOps);
                mensaje = "Evento Nº" + contMaps + " creado";
                controladorProgreso.newState(mensaje, contOps);  
                linea = this.myModeloDataMap.getDataLine();

            }
        } catch (Exception ex) {
            
            mensaje = "Falló la creacion de operacion nº "
                    + contMaps;
            controladorProgreso.newState(mensaje, contOps);
            this.controladorProgreso.finish();
            this.vistaSchema.mapFinish(false);
            Logger.getLogger(ControllerSchemaMapping.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
        
        return true;
    }
    
    private boolean initMapping3ontology() throws SQLException {
        stop = false;
        parametrosDB = new ArrayList();
        String mensaje;
        DefaultMutableTreeNode root = (DefaultMutableTreeNode) this.modeloArbolMap.getRoot();
        DefaultMutableTreeNode community_user = (DefaultMutableTreeNode) root.getChildAt(0);
        DefaultMutableTreeNode event = (DefaultMutableTreeNode) root.getChildAt(1);
        DefaultMutableTreeNode place_community = (DefaultMutableTreeNode) root.getChildAt(2);
        DefaultMutableTreeNode place_item = (DefaultMutableTreeNode) root.getChildAt(3);
        
        String[] tablaColOE;
        String[] tablaColOCU;
        String[] tablaColOPC;
        String[] tablaColOPI;
        contOps = 0;
        contMaps = 0;
        
        String commIDc;
        String commIDp;
        String userIDc;
        String userIDe;
        String placeIDc;
        String placeIDp;
        String itemIDe;
        String itemIDp;
        String eventValue;
        String tiempo;

        
        mensaje = "Iniciando Mapping...";
        controladorProgreso.newState(mensaje, contOps);
        /*
         * Comienza a crear eventos en la BD
         */
        
        if (!event.isLeaf()) {
            //comienza comprobacion de existencia de datos requeridos
            if (event.getChildAt(1).isLeaf()) {
                
                mensaje = "No existe elemento asociado a 'objeto'";
                controladorProgreso.newState(mensaje, contOps);
                this.controladorProgreso.finish();
                this.vistaSchema.mapFinish(false);
                return false;
            }
            //verifica que no se ha detenido por el usuario
            if (stop) {
                //System.out.println("Proceso detenido por el usuario");
                mensaje = "Proceso detenido por el usuario";
                controladorProgreso.newState(mensaje, contOps);
                this.controladorProgreso.finish();
                this.vistaSchema.mapFinish(false);
                return false;
            }
            String[] aux = null;
            //comprobar que hay elemento asociado a commIDc
            if (!community_user.getChildAt(0).isLeaf()) {  
                commIDc = community_user.getChildAt(0).getChildAt(0).toString();
                aux = getTableColumn(commIDc);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a commID: '" + commIDc + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            
            //comprobar que hay elemento asociado a userIDc
            if (!community_user.getChildAt(1).isLeaf()) {  
                userIDc = community_user.getChildAt(1).getChildAt(0).toString();
                mensaje = "Elemento asociado a userIDc: '" + userIDc + "'";
                aux = getTableColumn(userIDc);
                parametrosDB.add(aux[1]);
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDp
            if (!place_community.getChildAt(0).isLeaf()) {  
                commIDp = place_community.getChildAt(0).getChildAt(0).toString();
                aux = getTableColumn(commIDp);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a commIDp: '" + commIDp + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!place_community.getChildAt(1).isLeaf()) {  
                placeIDc = place_community.getChildAt(1).getChildAt(0).toString();
                aux = getTableColumn(placeIDc);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a placeIDc: '" + placeIDc + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!place_item.getChildAt(0).isLeaf()) {  
                placeIDp = place_item.getChildAt(0).getChildAt(0).toString();
                aux = getTableColumn(placeIDp);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a placeIDp: '" + placeIDp + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!place_item.getChildAt(1).isLeaf()) {  
                itemIDp = place_item.getChildAt(1).getChildAt(0).toString();
                aux = getTableColumn(itemIDp);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a itemIDp: '" + itemIDp + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!event.getChildAt(1).isLeaf()) {  
                itemIDe = event.getChildAt(1).getChildAt(0).toString();
                aux = getTableColumn(itemIDe);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a itemIDe: '" + itemIDe + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!event.getChildAt(2).isLeaf()) {  
                userIDe = event.getChildAt(2).getChildAt(0).toString();
                aux = getTableColumn(userIDe);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a userIDe: '" + userIDe + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!event.getChildAt(3).isLeaf()) {  
                eventValue = event.getChildAt(3).getChildAt(0).toString();
                aux = getTableColumn(eventValue);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a eventValue: '" + eventValue + "'";
                controladorProgreso.newState(mensaje, contOps);
            } else{
               mensaje = "Elemento asociado a commID";
               controladorProgreso.newState(mensaje, contOps); 
               return false;
            }
            //comprobar que hay elemento asociado a commIDc
            if (!event.getChildAt(4).isLeaf()) {  
                tiempo = event.getChildAt(4).getChildAt(0).toString();
                aux = getTableColumn(tiempo);
                parametrosDB.add(aux[1]);
                mensaje = "Elemento asociado a tiempo: '" + tiempo + "'";
                controladorProgreso.newState(mensaje, contOps);
            }
            
            if(datasetMode && aux != null){
                        boolean ok = mapFromDataset(parametrosDB);
                        if (!ok) {
                            return false;
                        }
                    }
                    else if (crawlerMode) {

                        boolean ok = mapFromXML(parametrosDB);
                        parametrosDB.clear();
                        if (!ok) {
                            return false;
                        }
                    } else {
                        ResultSet rs = this.myModeloMap.getElement(aux[0], parametrosDB, null);
                        parametrosDB.clear();
                        rs.last();
                        contMaxOp = (rs.getRow() * 1 * 2) + 2;
                        rs.beforeFirst();
                        controladorProgreso.setMaxOp(contMaxOp);
                        
                        boolean ok = mapFromDB(rs);
                        if (!ok) {
                            return false;
                        }
                    }
            mensaje = "Mapeo finalizado exitosamente.";
            controladorProgreso.newState(mensaje, contOps);
            this.controladorProgreso.finish();

            this.vistaSchema.mapFinish(true);
            return true;
        }
        mensaje = "No existe elemento asociado a 'event'";
        controladorProgreso.newState(mensaje, contOps);
        this.controladorProgreso.finish();
        this.vistaSchema.mapFinish(false);
        return false;
    }

    private static String getTagValue(String sTag, Element eElement) {
        NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
        Node nValue = (Node) nlList.item(0);
        
        return nValue.getNodeValue();
    }

    /**
     * 
     * @param targetModel
     * @return
     */
    @Override
    public boolean setTargetModelMap(DefaultTreeModel targetModel) {
        this.modeloArbolMap = targetModel;
        controladorProgreso = AbstractControllerMapFactory.getAbstractControllerFactory().getControllerProgressMap();
        controladorProgreso.setController(this);
        ProgressMonitor pm = new ProgressMonitor(null, "Importación de Datos",
                "Realizando Importación...", 0, 100);
        pm.setNote("Insertando Datos...");
        pm.setProgress(0);
        new Thread() {
            public void run() {
                try {
                    ///initMapping(); // pm.setProgress(x) para cada registro
                    initMapping3ontology(); // pm.setProgress(x) para cada registro
                    // pm.setProgress(x) para cada registro
                } catch (SQLException ex) {
                    Logger.getLogger(ControllerSchemaMapping.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        ;
        }.start();
        return true;
    }

    /**
     * 
     * @param _metaS
     * @param _metaT
     */
    @Override
    public void setModelMap(DefaultTreeModel _metaS, DefaultTreeModel _metaT) {
        
        
        this.modeloTreeS = _metaS;
        
        this.modeloTreeT = _metaT;
    }

    
    /**
     * 
     */
    @Override
    public void cancelMap() {
        this.stop = true;
    }

    /**
     * 
     * @param modeloMap
     */
    @Override
    public void setMainModel(IModelMainMapping modeloMap) {
        this.myModeloMap = modeloMap;
        crawlerMode = false;
    }

    /**
     * 
     * @param modeloCrawler
     */
    @Override
    public void setMainModel(IModelCrawler modeloCrawler) {
        this.myModeloCrawler = modeloCrawler;
        crawlerMode = true;
    }

    /**
     * 
     */
    @Override
    public void startMappingMode() {
        
        /*
         * Inicio de vista de esquema
         */
        this.vistaSchema = AbstractViewMapFactory.getAbstractViewMapFactory().getVistaSchema();
      
        this.vistaSchema.setController(this);
        this.vistaSchema.setModelTree(modeloTreeS, modeloTreeT);
        this.vistaSchema.setVisibleViewMain(true);
    }

    /**
     * 
     * @param modeloDataMap
     * @param separador
     */
    @Override
    public void setMainModel(IModelDataMap modeloDataMap, String separador) {
        this.myModeloDataMap = modeloDataMap;
        datasetMode = true;
        this.separador = separador;
    }

    @Override
    public void set3OntologyModel(IEventMap evento, IPlaceHasCommunity placeHasCom, IPlaceHasItem placeHasItem, ICommunityHasUser comHasUser) {
        this.myEvento = evento;
        this.myPlaceHasCom = placeHasCom;
        this.myPlaceHasItem = placeHasItem;
        this.myComHasUser = comHasUser;
    }

    
}
